/**
 * @addtogroup gbc_msg_17691
 * gbc_17691_ds_sd
 * @brief        山东地标数据流编解码组件
 * @par 示例
 * @code
   // 该组件实现了山东数据流编解码的接口，主要针对山东地标协议

   // 创建管理器
   TGbc17691Mgr mgr;
   TGbc17691MsgStreamItem stream_item;
   TGbc17691DataStreamSdComp ds_comp;
   UInt8 buf[1024];

   TGbc17691MgrCreate(&mgr, kGbc17691ProtocolSd, 1, kGbc17691ETypeNotEncrypt);
   ...///< 设置管理器属性和事件
   if (TGbc17691MsgProtocolType(&mgr) == kGbc17691ProtocolSd)
   {
       // 获取数据流编解码接口
       TGbc17691DataStreamSdCompCreate(&ds_comp);
       mgr.data_stream_codec = TGbc17691DataStreamSdCompInterface(&ds_comp);
   }
   // 构建数据流消息对象
    TGbc17691MsgStreamCreate(&msg_stream, kPt17691UploadTypeReal);
    MfGetLocalTime(&st); ///< 获取采集时间
    TransMfTimeToByte(&st, msg_stream.collect_time, sizeof(msg_stream.collect_time));
    msg_stream.msg_seq = TGbc17691MgrMsgSeqId(mgr);

    // 构建数据流
    memset(&es, 0xff, sizeof(es));
    stream_item.msg_type = kPt17691MsgTypeDataStream;
    stream_item.msg_stream = &es;

    msg_stream.msg_count = 1;
    msg_stream.stream_item = &stream_item;

    enc_len = TGbc17691MsgEncode((TGbc17691Msg *)&msg_stream, &mgr, buf, sizeof(buf));
   ...
 * @endcode
 * @{
 */
/**
 * @file         gbc_17691_ds_sd.h
 * @brief        山东地标数据流编解码组件
 * @note
 * @author       dengdeshou
 * @date         2020-08-27
 * @version      1.0
 *
 * @par          修改日志
 * <table>
 * <tr><th>Date        <th>Version               <th>Author          <th>Description
 * <tr><td>2020-08-27  <td>1.0                   <td>Dengdeshou      <td>创建初始版本
 * @copyright    杭州鸿泉物联网技术股份有限公司
 */
#ifndef _SCC_PT17691_DS_SD_H_
#define _SCC_PT17691_DS_SD_H_

#include "ofc/ofc_types.h"
#include "ofc/ofc_object.h"
#include "gbmsg17691/gbc_17691_ds_interface.h"
#include "gbmsg17691/gbc_17691_ds_public_comp.h"

#ifdef __cplusplus
extern "C" {
#endif

/**
 * 山东地标补充数据流
 */
typedef struct TGbc17691ExtDataSdTag TGbc17691ExtDataSd;
struct TGbc17691ExtDataSdTag
{
    TGbc17691ExtData ext_data_public;
    // 瞬时油耗
    UInt32    inst_fuel_consumption_;
    // 发动机总运行时间
    UInt32    engine_total_runtime_;
};

/**
 * 山东地标数据流编解码组件
 */
typedef struct TGbc17691DataStreamSdCompTag TGbc17691DataStreamSdComp;
struct TGbc17691DataStreamSdCompTag
{
PRIVATE
    TGbc17691DataStreamPublicComp public_comp_;
    //IGbc17691DataStream ds_interface_;
};

/**
 * 构造函数
 * @param self: 对象自身指针
 * @return
 */
void TGbc17691DataStreamSdCompCreate(TGbc17691DataStreamSdComp *self);

/**
 * 析构函数
 * @param self: 对象指针
 * @return
 */
void TGbc17691DataStreamSdCompDestroy(TGbc17691DataStreamSdComp *self);

/**
 * 获取数据流编解码接口指针
 * @param self: 对象指针
 * @return
 */
IGbc17691DataStream *TGbc17691DataStreamSdCompInterface(TGbc17691DataStreamSdComp *self);

#ifdef __cplusplus
}
#endif
#endif

/**
 * @} 
 */
